package xkp.lesson1;

public class StopThread {
    public static void main(String[] args) throws InterruptedException {
        MyThread2 myThread = new MyThread2();
        //把myThread线程设置为主线程守护线程
        //所守护的线程一旦退出，自身也立马结束
        //myThread.setDaemon(true);
        myThread.start();
        Thread.sleep(1000*3);

        //主线程退出之前可以手动停止子线程
        //myThread.stopThread(false);
        System.out.println("主线程退出");
        //如果子线程不退出，应用程序一直在执行

        //System.exit(100);

        //应该要有一种比较优雅的退出线程的方式
    }
}

//我有一个线程，我希望它在异步的一直运行,比如监测网络状态.....
//如果程序退出,在程序结束前应该结束该线程。
class MyThread2 extends  Thread{
    private boolean flag = true;

    @Override
    public void run() {
        while(flag){
            System.out.println(Thread.currentThread().isDaemon()+":是否为守护线程");
            System.out.println("监测网络状态中....");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("停止网络监测....");
    }

    public void stopThread(boolean flag){
        this.flag = flag;
    }
}
